package org.data.replay.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.lang.NonNull;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Web MVC 配置类
 * 配置静态资源路径和默认首页
 *
 * @author DataReplay
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 配置静态资源处理器
     * 将前端打包后的 dist 文件夹内容放在 resources/static 目录下
     * 注意：Spring Boot 会优先匹配 Controller 路径，所以 /datareplay/** 不会被静态资源拦截
     */
    @Override
    public void addResourceHandlers(@NonNull ResourceHandlerRegistry registry) {
        // 配置静态资源路径
        // 前端打包后的 dist 文件夹内容应该放在 resources/static 目录下
        // 例如：将 datareplay-web/dist 目录下的所有文件复制到 resources/static 目录
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                // 开发环境不缓存，生产环境可以设置缓存时间（如 3600 秒）
                .setCachePeriod(0);
    }

    /**
     * 配置默认首页和前端路由
     * 支持 Vue Router 的 history 模式
     */
    @Override
    public void addViewControllers(@NonNull ViewControllerRegistry registry) {
        // 配置根路径返回 index.html
        registry.addViewController("/").setViewName("forward:/index.html");
        
        // 设置优先级，确保在静态资源处理之前
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    }
}

